package cn.itcast.shop.cart.action;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

import cn.itcast.shop.cart.vo.Cart;
import cn.itcast.shop.cart.vo.CartItem;
import cn.itcast.shop.product.service.ProductService;
import cn.itcast.shop.product.vo.Product;

public class CartAction extends ActionSupport {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 4477014660057340968L;

	/**
	 * 接收pid
	 */
	private Integer pid;
	
	/**
	 * 接收数量count
	 */
	private Integer count;
	
	private ProductService productService;
	
	public void setProductService(ProductService productService) {
		this.productService = productService;
	}

	public void setPid(Integer pid) {
		this.pid = pid;
	}

	public void setCount(Integer count) {
		this.count = count;
	}

	/**
	 * 将购物项添加到购物车:执行的方法
	 * @return
	 */
	public String addCart(){
		//封装一个CartItem对象.
		CartItem cartItem = new CartItem();
		//设置数量：
		cartItem.setCount(count);
		//根据pid进行查询商品
		// Product product = new Product();
		Product product = productService.findByPid(pid);
		//设置商品：
		cartItem.setProduct(product);
		//将购物项添加到购物车。购物车应该存在session 中。
		Cart cart = getCart();
		cart.addCart(cartItem);
		
		return "addCart";
	}
	
	/**
	 * 获得购物车的方法：从 session 中获得购物车
	 * @return
	 */
	private Cart getCart(){
		Cart cart = (Cart) ServletActionContext.getRequest().getSession().getAttribute("cart");
		if (cart==null) {
			cart = new Cart();
			ServletActionContext.getRequest().getSession().setAttribute("cart", cart);
		}
		return cart;
	}
	
	/**
	 * 清空购物车
	 * @return
	 */
	public String clearCart(){
		//获得购物车对象
		Cart cart = getCart();
		//调用购物车中的清空方法。
		cart.clearCart();
		return "clearCart";
	}
	
	/**
	 * 删除购物车中的某个商品
	 * @param pid
	 * @return
	 */
	public String removeCart(){
		//获得购物车对象
		Cart cart = getCart();
		cart.removeCart(pid);
		return "removeCart";
	}
	
	/**
	 * 我的购物车
	 * @return
	 */
	public String myCart(){
		return "myCart";
	}
	
}


























